﻿using Microsoft.Extensions.DependencyInjection;
using RayD.Core;
using System;

namespace RayD.App.Setup
{
    /// <summary>
    /// MiniProfiler 启动服务
    /// </summary>
    public static class MiniProfilerSetup
    {
        public static void AddMiniProfilerSetup(this IServiceCollection services)
        {
            if (services == null) throw new ArgumentNullException(nameof(services));

            //使用 MiniProfiler 的时候，那些数据其实是存放到内存里的，因此用到了IMemoryCache，所以我们必须要对其进行注入
            //之前2.2版本的时候，我们直接使用的是  services.AddMvc(); 这里已经包含了对内存接口的注入，但是升级3.0以后，我们可能会仅仅使用更轻量级的 services.AddControllers();这里是没有IMemoryCache服务的，所以我们必须单独注入

            if (AppSettings.MiniProfilerAOP.Enabled)
            {
                services.AddMiniProfiler(options =>
                {
                    options.RouteBasePath = "/profiler";
                    //(options.Storage as MemoryCacheStorage).CacheDuration = TimeSpan.FromMinutes(10);
                    options.PopupRenderPosition = StackExchange.Profiling.RenderPosition.Left;
                    options.PopupShowTimeWithChildren = true;
                });
            }
        }
    }
}
